2 research outputs found

    Refinement kinds: type-safe programming with practical type-level computation

    Get PDF
    UID/CEC/04516/2019 PTDC/EEICTP/4293/2014This work introduces the novel concept of kind refinement, which we develop in the context of an explicitly polymorphic ML-like language with type-level computation. Just as type refinements embed rich specifications by means of comprehension principles expressed by predicates over values in the type domain, kind refinements provide rich kind specifications by means of predicates over types in the kind domain. By leveraging our powerful refinement kind discipline, types in our language are not just used to statically classify program expressions and values, but also conveniently manipulated as tree-like data structures, with their kinds refined by logical constraints on such structures. Remarkably, the resulting typing and kinding disciplines allow for powerful forms of type reflection, ad-hoc polymorphism and type-directed meta-programming, which are often found in modern software development, but not typically expressible in a type-safe manner in general purpose languages. We validate our approach both formally and pragmatically by establishing the standard meta-theoretical results of type safety and via a prototype implementation of a kind checker, type checker and interpreter for our language.publishersversionpublishe

    A Model for Declarative Programming and Specification with Concurrency and Mobility

    No full text
    In this dissertation, we propose a framework for declarative specification and programming of modular systems with concurrency and mobility. The main contributions are the introduction and study of the core programming language Lpi, and of the dol specification logic for mobile processes. Lpi is a language that demonstrates a minimalist approach to the unification of multiple programming paradigms, by building on an interpretation of concurrent computation as proof-search in linear logic. Prominently, Lpi aims at unifying, in a uniform and tightly coupled way, a deduction-oriented computational model with a concurrent and mobile Milner-type model of interaction. We assess the expressiveness of Lpi as a programming language by showing that many concurrent and executable logic idioms can be reconstructed as its fragments, and also how it can motivate novel combinations of concurrent, functional, logic and object-oriented paradigms in a natural way. The relatio
    corecore